A data processing system carries out its overall objective by executing a number of tasks called program processes. If the data processing load is so large that a single processor cannot perform all of the required program processes, a multiprocessor system, using several processors operating in parallel, is frequently used. In a multiprocessor system, several data processors are executing programs associated with different program processes simultaneously.
A distributed multiprocessor system comprises at least two processors, each of which directly accesses an associated local random access memory to read data and instructions required to control the data processing operations; however, there is no random access memory directly accessible by all processors. When two processors in a distributed multiprocessing system communicate, they do so by data messages carried over a suitable interconnection medium such as a data link. This is in contrast to a non-distributed multiprocessor system in which processors may access some common shared memory and transmit data to each other through this common memory facility.
When two processes in a system need to communicate with each other, they normally do so via data messages, even when the two processes reside on the same processor. This makes it possible to have the same software communications interface between two processes on different processors as between two processes on the same processor.
A program process consists of a number of different subtasks, called procedures. In prior art distributed multiprocessing systems, a process is executed on a single processor. This simplifies the task of invoking or calling for the execution of the different procedures required to execute a process. An advantage of the prior art solution is that no intraprocess messages need be sent among different processors.
However, the restriction of a program process to a single processor in a distributed multiprocessor system, also creates difficulties. For example, in a system in which some program procedures are common to program processes executed on many different processors, the procedures must either be replicated in the random access memories of many processors, or paged from bulk memory into the random access memories of these processors as needed. Storage in random access memory is expensive, and in real time systems requiring rapid response to external stimuli, paging may not be a feasible alternative because the required response time of the system cannot be achieved. Further, if the system included special processors, such as processors designed for making numerical calculations rapidly, it would be an advantage to be able to execute selected program procedures on these special processors.
For example, in the case of a distributed telephone switching system, many customer interface module processors execute the process of setting up a telephone call. While it is efficient to store and execute the process of setting up a simple telephone call in each customer interface module processor, it is uneconomical to store in each interface module processor the many complex, specialized, and infrequently used procedures associated with specialized calls, such as conference calls. Breaking up the basic telephone call process into a number of cooperating processes is also unsatisfactory since this incurs a large overhead occasioned by the additional communications among these processes, and introduces delays in the call set-up time.
It is an object of the present invention to permit execution of a process by two or more processors in a real time environment without substantial increase in system overhead.